Java Technologies Entity এর জন্য Primary Key এবং Generated Value গাইড ও নোট

325

Hibernate (হাইবারনেট) একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনগুলিতে ডেটাবেস ইন্টিগ্রেশনকে সহজ করে তোলে। Hibernate-এ Entity ক্লাস তৈরি করার সময়, প্রতিটি Entity এর জন্য একটি Primary Key (প্রাথমিক কী) নির্ধারণ করা হয়। Hibernate এই প্রাথমিক কী এর মাধ্যমে একটি ইউনিক আইডেন্টিফায়ার তৈরি করে, যা ডেটাবেস টেবিলের মধ্যে প্রতিটি রেকর্ডকে আলাদা করে। এর জন্য Hibernate বিভিন্ন পদ্ধতি ব্যবহার করে Primary Key নির্ধারণ এবং Generated Value পরিচালনা করতে পারে।

Hibernate Entity এর জন্য Primary Key এবং Generated Value

Hibernate এ Primary Key এবং Generated Value ব্যবহারের জন্য দুটি গুরুত্বপূর্ণ অ্যানোটেশন রয়েছে:

  1. @Id - প্রাথমিক কী (Primary Key) নির্দেশ করতে ব্যবহৃত হয়।
  2. @GeneratedValue - Hibernate কে জানাতে ব্যবহৃত হয় যে প্রাথমিক কীটি স্বয়ংক্রিয়ভাবে তৈরি হবে, যেমন auto-increment (ডেটাবেস দ্বারা).

1. @Id এবং @GeneratedValue এর ব্যবহার

@Id:

এই অ্যানোটেশনটি ব্যবহৃত হয় একটি ক্লাসের ক্ষেত্রকে Primary Key হিসেবে চিহ্নিত করতে।

@GeneratedValue:

এটি Hibernate কে নির্দেশ দেয় যে এই ক্ষেত্রের মানটি স্বয়ংক্রিয়ভাবে তৈরি করা হবে। এটি সাধারণত primary key ক্ষেত্রের জন্য ব্যবহৃত হয়, যেখানে Hibernate বা ডেটাবেস সার্ভার প্রাথমিক কী তৈরি করে (যেমন auto-increment ব্যবহার করে)।

@GeneratedValue এর ধরণ:

Hibernate-এ @GeneratedValue এর সাথে কিছু পদ্ধতি ব্যবহার করা যেতে পারে, যেমন:

  1. GenerationType.AUTO: Hibernate ডেটাবেসের সক্ষমতার উপর ভিত্তি করে কী তৈরি করবে (যেমন, auto-increment for MySQL)।
  2. GenerationType.IDENTITY: ডেটাবেসের identity column ব্যবহার করবে, যা সাধারণত auto-increment
  3. GenerationType.SEQUENCE: একটি sequence ব্যবহার করবে (প্রধানত Oracle এবং PostgreSQL-এ ব্যবহৃত)।
  4. GenerationType.TABLE: একটি টেবিল ব্যবহার করে কী তৈরি করবে (কম ব্যবহৃত)।

উদাহরণ: Hibernate Entity ক্লাসে Primary Key এবং Generated Value ব্যবহার

1. Entity ক্লাস তৈরি করা:

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)  // Automatically generated primary key
    private int id;
    
    private String name;
    private String email;

    // Default constructor
    public User() {}

    // Getter and setter methods
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

এখানে:

  • @Id ব্যবহার করা হয়েছে id ক্ষেত্রকে Primary Key হিসেবে চিহ্নিত করতে।
  • @GeneratedValue(strategy = GenerationType.AUTO) ব্যবহার করা হয়েছে যাতে Hibernate ডেটাবেসের সক্ষমতা অনুসারে প্রাথমিক কীটি স্বয়ংক্রিয়ভাবে তৈরি করতে পারে (যেমন MySQL এর auto-increment বা PostgreSQL এর serial ক্ষেত্র)।

2. Hibernate কনফিগারেশন এবং EntityManager ব্যবহার:

Hibernate কনফিগারেশন ফাইল (hibernate.cfg.xml) এবং EntityManager ব্যবহার করে ডেটাবেসে ইনসার্ট করা:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateDemo {

    public static void main(String[] args) {
        // Create SessionFactory
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml")
                .addAnnotatedClass(User.class)
                .buildSessionFactory();

        // Create session
        Session session = factory.getCurrentSession();

        try {
            // Create a new User object
            User user = new User();
            user.setName("John Doe");
            user.setEmail("john.doe@example.com");

            // Start a transaction
            session.beginTransaction();

            // Save the User object (this will generate the primary key automatically)
            session.save(user);

            // Commit the transaction
            session.getTransaction().commit();

            System.out.println("Generated ID: " + user.getId()); // Print the auto-generated ID
        } finally {
            factory.close();
        }
    }
}

এখানে:

  • Session.save(user) ব্যবহৃত হয়েছে User অবজেক্টটিকে ডেটাবেসে সেভ করতে, যেখানে Primary Key id স্বয়ংক্রিয়ভাবে তৈরি হবে।

3. Primary Key Generation Strategy Examples:

GenerationType.IDENTITY:

এই স্ট্রাটেজি সাধারণত MySQL বা PostgreSQL এ ব্যবহৃত হয়, যেখানে ডেটাবেস auto-increment ফিচার ব্যবহার করে। Hibernate ডেটাবেসের নিজস্ব identity column থেকে আইডি নেয়।

@GeneratedValue(strategy = GenerationType.IDENTITY)

GenerationType.SEQUENCE:

এই স্ট্রাটেজি সাধারণত Oracle বা PostgreSQL-এ ব্যবহৃত হয়, যেখানে sequence ব্যবহার করে আইডি তৈরি হয়।

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_sequence")
@SequenceGenerator(name = "user_sequence", sequenceName = "user_seq", allocationSize = 1)

এখানে @SequenceGenerator ব্যবহার করা হয়েছে, যা ডেটাবেসের sequence টেবিলের মাধ্যমে প্রাথমিক কী তৈরি করবে।

GenerationType.TABLE:

এই স্ট্রাটেজি ব্যবহার করা হয় যেখানে ডেটাবেসে একটি table ব্যবহার করে primary key তৈরি করা হয়। এটি কম ব্যবহৃত, কিন্তু কিছু নির্দিষ্ট পরিস্থিতিতে উপকারী হতে পারে।

@GeneratedValue(strategy = GenerationType.TABLE, generator = "user_table_generator")
@TableGenerator(name = "user_table_generator", table = "id_generator", pkColumnName = "entity_name", valueColumnName = "next_id", pkColumnValue = "user_id", initialValue = 100, allocationSize = 1)

এখানে @TableGenerator ব্যবহার করা হয়েছে, যা একটি টেবিলের মাধ্যমে ডেটাবেসে প্রাথমিক কী তৈরি করবে।


4. Hibernate এর Primary Key এবং Generated Value-এর সুবিধা:

  • Automatic ID Generation: Hibernate ব্যবহার করলে primary key স্বয়ংক্রিয়ভাবে তৈরি হয়, এবং আপনি কোনো SQL কোড বা ম্যানুয়ালি আইডি নির্ধারণ করতে হবে না।
  • Different Strategies: Hibernate বিভিন্ন generation strategies সরবরাহ করে, যা আপনাকে বিভিন্ন ডেটাবেসের সাথে কাজ করার সময় প্রাথমিক কী তৈরি করার জন্য উপযুক্ত পদ্ধতি নির্বাচন করতে দেয়।
  • Database Independence: Hibernate আপনাকে ডেটাবেসের সক্ষমতার উপর নির্ভর না করে ID generation পরিচালনা করতে সক্ষম করে, এটি আপনার অ্যাপ্লিকেশনকে database-independent করে তোলে।

Hibernate এ Primary Key এবং Generated Value ব্যবহারের মাধ্যমে ডেটাবেসে রেকর্ডের জন্য একটি ইউনিক আইডেন্টিফায়ার তৈরি করা হয়। @Id অ্যানোটেশনটি প্রাথমিক কী চিহ্নিত করার জন্য ব্যবহৃত হয় এবং @GeneratedValue এর মাধ্যমে সেই কীটি স্বয়ংক্রিয়ভাবে তৈরি করা হয়। Hibernate ব্যবহার করে আপনি ডেটাবেসের সাথে যুক্ত Java অ্যাপ্লিকেশনগুলিতে ডিপেন্ডেন্সি ইনজেকশন, পারফরম্যান্স অপটিমাইজেশন, এবং ডেটাবেস ইন্টিগ্রেশন সহজে এবং কার্যকরভাবে পরিচালনা করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...